May 92 - Why OODLs are Good for You
Why OODLs are Good for You
Jeffrey W Stulin
Jeffrey W Stulin Computer Software Consultants AppleLink: D1104
End of a Friendship?
During a recent visit to Florida, while staying with friends (a pair of authors), I had a
frustrating, ninety minute, one a.m. argument about programming languages.
My friend Bob has had no formal computer education, yet he was able to create a
sophisticated poker playing program written totally in HyperTalk. He proudly
demonstrated the program running on his new Powerbook 170 (Yes, a 170. He is a
best-selling author....)
After the demonstration we discussed Bob's plans for continuing his computer
self-education. He wanted to know why he should learn another computer language.
After all couldn't you program anything using HyperTalk?
I went into my usual b/s about Turing Machines, and yes you could theoretically use
HyperTalk for all programming, but that HyperTalk was impractical for many
problems.
"Like what?" he asked innocently.
During the next hour my blood pressure rose to 200 over 100; we wasted a tree
trying to outline examples and counter examples; Bob went through half a bottle of
scotch; both wives fell asleep in their comfy chairs (clearly not software ideologues);
and I ranted eloquently about both practical and obscure issues in software
development. But Bob just sat there shaking his head and repeating:
"Couldn't I just write a HyperTalk function to do that?
What really annoyed me was that he was right: you can do just about anything with a
HyperTalk function. At least anything that Bob could conceive of, since he has only had
the HyperTalk language to express his programming thoughts.
Bob and I lacked a common vocabulary to talk about software concepts beyond his
experience. Arrays, objects, structures, file management, and typed variables are a
mystery to him.
End of my credibility in MADA?
This is the same problem I have in convincing those of you without significant dynamic
language experience that OODLs-Object-Oriented Dynamic Languages such as
Macintosh Common Lisp (MCL) and Smalltalk-are a good idea. We don't have a common
vocabulary for communication.
Here is a statement that will get me into trouble. Putting aside the issue of runtime
performance I claim that:
The set of interesting problems which can be reasonably explored and expressed using
an object oriented dynamic language such as MCL is, while not a proper superset,
much larger than the set which can be reasonably explored and expressed by a static
language such as C++.
By "explored and expressed" I mean that, when faced with a problem, a programmer
must first figure out how to solve it and then express the solution using a
programming language.
Their ability to explore and express a large set of problems is the reason that dynamic
languages have been the mainstay of Artificial Intelligence, which has tried to solve the
"hardest" problems.
I can see that many of you are shaking your head in skepticism. After all, if OODLs are
so good, why doesn't everybody use them? (You may also want to ask yourself why
object-oriented programming didn't catch on in the 1960's when it was invented.)
The traditional answer (there are others, but this is the big one) is that their runtime
performance characteristics are poor. They are slow, they use lots of memory, and
they are occasionally interrupted by garbage collection. Which leads me to my second
claim:
Advances in hardware and compiler technology will soon overcome the traditional
runtime performance problems of OODLs.
In my yet-to-be-published third MCL article, I will note that figuring out how to
squeeze performance out of MCL is not easy, but once done (or, in my case, once told
how by the MCL development team), performance, as an issue, almost disappears.
Based on these claims, I draw a conclusion:
Sometime around the end of this decade, OODLs will be the mainstream tools used for
developing software applications.
Don't take my word for it, I'm just some fool babbling over the link-waves. You can
believe Larry Tesler, whose keynote address at the MADA conference said much the
same thing. In fact, you don't even have to believe me about what Larry said; my
understanding is that his speech is included on the conference CD. Watch him for
yourself.
Is there Help for bob?
You may have noticed that this article is filled with philosophical hot air and is
disappointingly thin on evidence, just like my argument with Bob. I admit my sins, ask
forgiveness, and make a promise. If you, the MADA community, show an interest in
OODLs, then I (and others) will write a series of articles exploring aspects of OODLs
which will prove the claims stated here. Topics will include: What makes dynamic
languages so expressive, dynamically vs. statically typed variables, automatic memory
management, runtime performance of dynamic languages, etc. etc. And I will make Bob
read them all.
I believe OODLs are in our professional future, that we can have a say in the direction
of OODL development, and that programming with OODLs is more productive and
pleasant than is programming using the current crop of static languages. That is why I
am a co-founder of the new OODL/MCL SIG.
Interested? Join the OODL/MCL SIG and let me know.